
/**
 *  * 防抖
 * 一段时间后再执行操作、若在一段时间内重复操作、则重新计时
 * @param {*} fn 执行的操作
 * @param {*} interval  一段时间
 */
function debounce(fn,interval){
  var timeout = interval || 3000 // 如果没有传时间、那就是3s后执行
  var timer
  return function(){

    clearInterval(timer)// 清除定时器
    var args = arguments// 起始调用传递参数
    var that = this
    timer = setTimeout(() => {
      fn.call(that,args)
    }, timeout); 
  }
}

/**
* 节流
* 在一段时间内只运行一次、若重复操作、也执行运行一次
* 
* @param {*} fn 
* @param {*} interval 
*/
function throttle(fn,interval){
  var timeout = interval || 10000 // 如果没有传时间、3s内不能重复执行
  var start_time = 0 // 第一次操作、默认是0

  return function(){
//  和验证码发送逻辑一致、三分钟只能发送一次
    var end_time = new Date()
    if(end_time - start_time  >  timeout ) {
        fn.call(this,arguments)
        start_time = end_time// 将我们第一次操作的时间、赋值给开始时间
    }

  }

}


export default{
debounce,
throttle
}